﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;

public partial class UserControls_Notify : System.Web.UI.UserControl
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    public Iudicium.Utilitarios.Notificacion.TipoNotificacion Type
    {
        set { TypeHiddenField.Value = value.ToString(); }
        get 
        {
            return TypeHiddenField.Value.Equals(Iudicium.Utilitarios.Notificacion.TipoNotificacion.Error.ToString()) ?
                Iudicium.Utilitarios.Notificacion.TipoNotificacion.Error :
                Iudicium.Utilitarios.Notificacion.TipoNotificacion.Alert;
        }
    }

    public string Message
    {
        set { MessageLiteral.Text = value; }
        get { return MessageLiteral.Text; }
    }

    protected string MessageLabel
    {
        get { return Type == Iudicium.Utilitarios.Notificacion.TipoNotificacion.Alert ? "Mensaje" : "Error"; }
    }

    protected string ClassForType
    {
        get { return Type == Iudicium.Utilitarios.Notificacion.TipoNotificacion.Alert ? "ui-state-highlight ui-corner-all" : "ui-state-error ui-corner-all"; }
    }

    protected string Icon
    {
        get { return Type == Iudicium.Utilitarios.Notificacion.TipoNotificacion.Alert ? "ui-icon-info" : "ui-icon-alert"; }
    }

    public enum NotifyingType
    {
        Error,
        Alert
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        Visible = false;
        if(!IsPostBack)
            Update();
        
    }

    public void Update()
    {
        try
        {
            if (Session["Notificacion"] != null && Session["Notificacion"] is Iudicium.Utilitarios.Notificacion)
            {
                Iudicium.Utilitarios.Notificacion obj = (Iudicium.Utilitarios.Notificacion)Session["Notificacion"];
                Message = obj.Mensaje;
                Type = obj.Tipo;
                Visible = true;
            }
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener la notificacion del sistema.", ex);
            Visible = false;
        }
        NotificationPanel.CssClass = ClassForType;
        Session["Notificacion"] = null;
    }
}
